package org.wlldTest.lesson2;


import java.util.Arrays;
import java.util.Random;
import org.wlld.pso.PSO;

public class Test {
    // 运营 人数  aNub  客服人数cNub  运营分成 0.35  其他分成0.22  我的收益 0.129
    // 总流水是  y=x*aNub
    // 运营个人流水指标是 x
    //t代表固定成本
    //运营成本约束 0.35*y>4000*aNub->x>=440
    // 我的收益  0.129*(x*aNub-t)=z
    //z越大->提升x,提升aNub 减少t
    public static void main(String[] args) throws Exception {
        // 1,2,3,4,5 , |1- 3|+|2-3|+..|5-3|/5 无限靠近在一个指定范围内随机生成的数值
        double[] minBorder = new double[]{1, 1, 1, 1, 1};
        double[] maxBorder = new double[]{40, 40, 40, 40, 40};
        Random random = new Random();
        int n = random.nextInt(20);//宝藏是 距离n最小的分配方案 假设n=5
        MyPosFunction myPosFunction = new MyPosFunction(n);
        PSO pso = new PSO(5, minBorder, maxBorder, 200, 200, myPosFunction
                , 0.5, 2, 2, false, 10, 1);
        pso.start();
        double[] best = pso.getAllBest();
        double sigma = myPosFunction.sigma(best);
        double sub = myPosFunction.getResult(best, 0);
        System.out.println("所有人拿到金额的和:" + sigma);
        System.out.println("与指定目标的平均差:" + sub + ",我们指定目标的平均差的值:" + n);
        System.out.println(Arrays.toString(best));
    }
}
